#include "ThreadRysujacy.h"
#include "qlist.h"
ThreadRysujacy::ThreadRysujacy()
{
	group = new QParallelAnimationGroup;
	
}


void ThreadRysujacy::przygotujsamochody()
{	
	
	
		QHashIterator<QPoint,Car> it(this->wskNaPozycje->pozycje);
		while(it.hasNext())
		{
			it.next();
			Car temp = it.value();
		
			for(int i=0; i<ListaAut->size(); i++)
			{
				if(ListaAut->at(i)->id == temp.getId())
				{
					ListaAut->at(i)->setEndPos(temp.getPosition());
				}
			
			
			}
		}
		
	
}

void ThreadRysujacy::rysuj(){
	ustawPozycje();
	group->clear();
	przygotujsamochody();
	connect(group, SIGNAL( finished()), this, SLOT(przerysowano()));
	przygotujanimacje();
	group->start();
	
}

void ThreadRysujacy::przygotujanimacje()
{
	for(int i=0; i<ListaAut->size(); i++)
	{
		QPropertyAnimation *animacja = new QPropertyAnimation(ListaAut->at(i), "geometry");
		animacja->setDuration(2000);
		animacja->setStartValue(QRect(40*ListaAut->at(i)->StartPos.ry()+10, 40*ListaAut->at(i)->StartPos.rx()+10, 20, 20));
		animacja->setEndValue(QRect(40*ListaAut->at(i)->EndPos.ry()+10, 40*ListaAut->at(i)->EndPos.rx()+10, 20, 20));
		group->addAnimation(animacja);
		
	}
}
void ThreadRysujacy::ustawPozycje()
{
	for(int i=0; i<ListaAut->size(); i++)
	{
		QPoint tmp = ListaAut->at(i)->EndPos;
		ListaAut->at(i)->StartPos = tmp;
	}

}
void ThreadRysujacy::przerysowano()
{
		
		group->stop();
		wskNaPozycje->narysowano = true;
	
}